package at.ac.tuwien.lsds.model;

import java.util.Collection;

import at.ac.tuwien.lsds.exception.MachineException;

public interface VirtualMachine extends Machine{
	/**
	 * set the hdd size in mb
	 * @param hdd
	 * @throws MachineException if the given hdd size is smaller than the current used hdd size
	 */
	public void setHdd(Integer hdd) throws MachineException;
	
	/**
	 * set the ram size in mb
	 * @param ram
	 * @throws MachineException if the given ram size is smaller than the current used ram size
	 */
	public void setRam(Integer ram) throws MachineException;
	
	/**
	 * set the cpu size in mhz
	 * @throws MachineException if the given cpu size is smaller than the current used cpu size
	 * @param cpu
	 */
	public void setCpu(Integer cpu) throws MachineException;
	
	/**
	 * returns the count of running applications
	 * @return the count of running applications as Integer
	 */
	public Integer getRunningAppCount();

	/**
	 * gets the applications running on the virtual machine
	 * @return all applications that are currently running on the virtual machine.
	 */
	public Collection<Application> getApplications();
	
	
	public void increaseRunningTime();
}
